Attended automation robots run on a computing system operated by a user. An issue that can arise in attended automation scenarios is that the robot may “take over” the user's computing system while the user is trying to interact with the computing system. In other words, the robot controls applications through the user interface (UI) in the same manner that the user would (e.g., simulating mouse clicks and keyboard input).
Various technologies exist that create complete or partial copies of an operating system or the applications running thereon. Emulators have been around for decades and may provide developers with the ability to test and debug applications. For instance, emulators may provide developers with the ability to test and debug mobile applications that use an operating system that does not support running development tools directly. Both Android® and iOS® offer emulators that can be run from a development machine to test and debug an Android® or iOS® application since the developer tools cannot be natively run on those mobile operating systems.
Simulators allow a developer to host a window on his or her local machine that lets the developer test and debug behavior of an application that are difficult or impossible to perform on a development machine. For example, simulators allow the developer to click a button to rotate the simulator, which tells the application running inside the simulator the device has been rotated for the purposes of testing and debugging application behavior that responds to these events. Another common example is multi-touch. Many developer machines do not support touch, so the simulator lets the developer test and debug how the application responds to multiple touch points. Android® and iOS® emulators also offer simulation capabilities. Furthermore, Microsoft® offers a simulator for their Universal Windows Platform (UWP) applications.
Virtual machines host a second operating system on the machine and can be opened and monitored through a window. This runs a completely different operating system and shares the hardware with the host machine. The “guest” machine must have its own copies of applications installed and does not share common resources or files with the user machine.
Docker® containers are conceptually a hybrid form of virtual machine. All of the applications that need to be executed are packaged into an immutable package that is executed directly on the host operating system. The package is not a complete copy of another operating system, but it does not by default share or have access to any of the applications or resources on the host machine. Thus, from a user experience perspective, Docker® containers feel similar to a virtual machine, but technically, the containers are not executing on a completely separate operating system.
However, conventional emulators, simulators, virtual machines (VMs), and hybrid VMs providing operating system (OS)-level virtualization (e.g., Docker® containers) do not address the issues that arise with attended automation robots operating on the same computing system as the user. Thus, the user essentially becomes a spectator for his or her own computing system, watching the robot work and being unable to interact with other applications on the machine that require user interaction. Accordingly, an improved approach may be beneficial.